package com.hiray.demos.visualEffect

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.util.Log
import android.view.View
import com.hiray.demos.R
import com.hiray.demos.event.HideSearchEvent
import com.hiray.demos.event.RevealSearchEvent
import kotlinx.android.synthetic.main.activity_search_prev.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe

/**
 *一共由两个页面组成（两个页面都有一个完全一样的搜索框），第一个页面什么都不用做，只是在跳转到搜索页面时把搜索
 * 框的在屏幕上的绝对位置传到第二页面，第二个页面收到这个位置后，把搜索框调整到和第一个页面搜索框的位置，达到搜
 * 索框是同一个的效果，随后利用动画移动搜索框，所以并没有用到共享元素，只是障眼法。完全达到ele的效果，需要处理的
 * 还有scale后导致的文字变形问题，这里采用的处理方法的是使用搜索框背景参与形变，实际可以另外再加一个真正输入的edittext，
 * 所以整个效果就是一直在平移控件
 */
class SearchPrevActivity : AppCompatActivity() {
    val TAG = "SearchPrevActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search_prev)
        EventBus.getDefault().register(this)
    }

    fun jump(v: View) {
        Log.i(TAG, ": ")
        val intent = Intent(this, SearchEleActivity::class.java)
        val location = IntArray(2)
        val textLocation = IntArray(2)
        v.getLocationOnScreen(location)
        search_hint_text.getLocationOnScreen(textLocation)
        Log.i(TAG, ":location:  ${location[0]} ${location[1]} ")
        intent.putExtra("coordinateX", location[0])
        intent.putExtra("coordinateY", location[1])
        intent.putExtra("textCoordinateX", textLocation[0])
        intent.putExtra("textCoordinateY", textLocation[1])
        startActivity(intent)
        //消除默认的动画效果
        overridePendingTransition(0, 0)
    }


    override fun onPause() {
        super.onPause()
        Log.i(TAG, ": onPause ")
    }

    override fun onStop() {
        super.onStop()
        Log.i(TAG, ":onStop ")
    }

    override fun onResume() {
        super.onResume()
        Log.i(TAG, ": onResume")
    }

    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }

    @SuppressWarnings("unused")
    @Subscribe
    public fun hideSearch(event: HideSearchEvent) {
        Log.i(TAG, "hideSearch: ")
        search_parent.visibility = View.INVISIBLE
    }

    @SuppressWarnings("unused")
    @Subscribe
    public fun showSearch(event: RevealSearchEvent) {
        Log.i(TAG, "showSearch: ")
        search_parent.visibility = View.VISIBLE
    }

}
